<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FabGL: ps2controller.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">FabGL
   </div>
   <div id="projectbrief">ESP32 VGA Controller and Graphics Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('ps2controller_8cpp.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">ps2controller.cpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;strings.h&gt;</code><br />
<code>#include &quot;freertos/FreeRTOS.h&quot;</code><br />
<code>#include &quot;esp32/ulp.h&quot;</code><br />
<code>#include &quot;driver/rtc_io.h&quot;</code><br />
<code>#include &quot;soc/sens_reg.h&quot;</code><br />
<code>#include &quot;<a class="el" href="ps2controller_8h_source.html">ps2controller.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="utils_8h_source.html">utils.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacefabgl"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefabgl.html">fabgl</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a4bfbe1f06bbbe7b444e7ac1f151351eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a4bfbe1f06bbbe7b444e7ac1f151351eb">ALU_SEL_STAGE_INC</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a4bfbe1f06bbbe7b444e7ac1f151351eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab652b8c0cfd8899667d91f76a7e91c2e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ab652b8c0cfd8899667d91f76a7e91c2e">ALU_SEL_STAGE_DEC</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ab652b8c0cfd8899667d91f76a7e91c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab868d72a02aa796b83215b40138c6f97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ab868d72a02aa796b83215b40138c6f97">ALU_SEL_STAGE_RST</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ab868d72a02aa796b83215b40138c6f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c1c1ff8c426e46b2c8cad9a7ff138c8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:a1c1c1ff8c426e46b2c8cad9a7ff138c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9393ef34cc4462c34fcfdf54804978e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ac9393ef34cc4462c34fcfdf54804978e">I_STAGEINCI</a>(imm_)</td></tr>
<tr class="separator:ac9393ef34cc4462c34fcfdf54804978e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f0ad49a10c5a9d3ded1d85a383e65f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a71f0ad49a10c5a9d3ded1d85a383e65f">I_STAGEDECI</a>(imm_)</td></tr>
<tr class="separator:a71f0ad49a10c5a9d3ded1d85a383e65f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9fd47ba32cdba2080612cb4f043100e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ac9fd47ba32cdba2080612cb4f043100e">I_STAGERSTI</a>()</td></tr>
<tr class="separator:ac9fd47ba32cdba2080612cb4f043100e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4dbdabbf7925d4a8a35c96b902fec00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#af4dbdabbf7925d4a8a35c96b902fec00">I_STAGEBL</a>(pc_offset,  imm_value)</td></tr>
<tr class="separator:af4dbdabbf7925d4a8a35c96b902fec00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4755949cb17dd864e133403d44dcd7b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a4755949cb17dd864e133403d44dcd7b5">I_STAGEBLE</a>(pc_offset,  imm_value)</td></tr>
<tr class="separator:a4755949cb17dd864e133403d44dcd7b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d52b3d8b631221e33b9279d00a970e6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a8d52b3d8b631221e33b9279d00a970e6">I_STAGEBGE</a>(pc_offset,  imm_value)</td></tr>
<tr class="separator:a8d52b3d8b631221e33b9279d00a970e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53f586c2584f6b950fd270a44ce7b04e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a53f586c2584f6b950fd270a44ce7b04e">M_STAGEBL</a>(label_num,  imm_value)</td></tr>
<tr class="separator:a53f586c2584f6b950fd270a44ce7b04e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab40d3683c4eca6567bc9276b575fc864"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ab40d3683c4eca6567bc9276b575fc864">M_STAGEBGE</a>(label_num,  imm_value)</td></tr>
<tr class="separator:ab40d3683c4eca6567bc9276b575fc864"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2550166573bd62d4288f8b4b727dbc77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a2550166573bd62d4288f8b4b727dbc77">M_STAGEBLE</a>(label_num,  imm_value)</td></tr>
<tr class="separator:a2550166573bd62d4288f8b4b727dbc77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b7f9873e5b44904e667e8f8637cf603"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a>&#160;&#160;&#160;12</td></tr>
<tr class="separator:a5b7f9873e5b44904e667e8f8637cf603"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16d0788f82ffc4b01de3d00f1daf8ea7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a16d0788f82ffc4b01de3d00f1daf8ea7">SUB_OPCODE_DAT_ENABLE_OUTPUT</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a16d0788f82ffc4b01de3d00f1daf8ea7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a6f288524413c992f2e050ef73dea69"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a6a6f288524413c992f2e050ef73dea69">SUB_OPCODE_DAT_ENABLE_INPUT</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a6a6f288524413c992f2e050ef73dea69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85aeae26c958f9af8f3a01272ac3ccb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a85aeae26c958f9af8f3a01272ac3ccb2">SUB_OPCODE_CLK_ENABLE_OUTPUT</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:a85aeae26c958f9af8f3a01272ac3ccb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add9b0bf4256670413f2e06e0bb52bfc5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#add9b0bf4256670413f2e06e0bb52bfc5">SUB_OPCODE_CLK_ENABLE_INPUT</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:add9b0bf4256670413f2e06e0bb52bfc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb1cf39b55c237777170e7a1482f4bc0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#adb1cf39b55c237777170e7a1482f4bc0">SUB_OPCODE_READ_CLK</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:adb1cf39b55c237777170e7a1482f4bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cfb47794c37ac75d6be4342fa30e0da"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a5cfb47794c37ac75d6be4342fa30e0da">SUB_OPCODE_READ_DAT</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:a5cfb47794c37ac75d6be4342fa30e0da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78eafe1938d187551724a7387d5d5049"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a78eafe1938d187551724a7387d5d5049">SUB_OPCODE_WRITE_CLK</a>&#160;&#160;&#160;6</td></tr>
<tr class="separator:a78eafe1938d187551724a7387d5d5049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada4b23db4c3182a1bfc090b8aee74f61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ada4b23db4c3182a1bfc090b8aee74f61">SUB_OPCODE_WRITE_DAT</a>&#160;&#160;&#160;7</td></tr>
<tr class="separator:ada4b23db4c3182a1bfc090b8aee74f61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab53d041c86ba4e908882a5b557aca27b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ab53d041c86ba4e908882a5b557aca27b">DAT_ENABLE_OUTPUT</a>(value)</td></tr>
<tr class="separator:ab53d041c86ba4e908882a5b557aca27b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10dcf51781ccd8966e2bfb50ed9efedc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a10dcf51781ccd8966e2bfb50ed9efedc">DAT_ENABLE_INPUT</a>(value)</td></tr>
<tr class="separator:a10dcf51781ccd8966e2bfb50ed9efedc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80a16ddf4ac1d8a3c591bde33666ae81"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a80a16ddf4ac1d8a3c591bde33666ae81">CLK_ENABLE_OUTPUT</a>(value)</td></tr>
<tr class="separator:a80a16ddf4ac1d8a3c591bde33666ae81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab23c17990eb92150e0a68f4b9ca9d163"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ab23c17990eb92150e0a68f4b9ca9d163">CLK_ENABLE_INPUT</a>(value)</td></tr>
<tr class="separator:ab23c17990eb92150e0a68f4b9ca9d163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9243e4924e006c3a32a267fbdf950822"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a9243e4924e006c3a32a267fbdf950822">READ_CLK</a>()</td></tr>
<tr class="separator:a9243e4924e006c3a32a267fbdf950822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed4ba55f171bb3792a7234f58e8e43ed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#aed4ba55f171bb3792a7234f58e8e43ed">READ_DAT</a>()</td></tr>
<tr class="separator:aed4ba55f171bb3792a7234f58e8e43ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0ba0e5cc89746602bd06ca6a5c85c62"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ae0ba0e5cc89746602bd06ca6a5c85c62">WRITE_CLK</a>(value)</td></tr>
<tr class="separator:ae0ba0e5cc89746602bd06ca6a5c85c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab33235b78bba02ef274506dbda628e97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ab33235b78bba02ef274506dbda628e97">WRITE_DAT</a>(value)</td></tr>
<tr class="separator:ab33235b78bba02ef274506dbda628e97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfc5f30a2fd7f671a7582e5487914412"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#acfc5f30a2fd7f671a7582e5487914412">CONFIGURE_DAT_INPUT</a>()</td></tr>
<tr class="separator:acfc5f30a2fd7f671a7582e5487914412"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bce29ca4dc74fef073aa33b93980cce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a7bce29ca4dc74fef073aa33b93980cce">CONFIGURE_DAT_OUTPUT</a>()</td></tr>
<tr class="separator:a7bce29ca4dc74fef073aa33b93980cce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0ba4ca53d0ee907eb9bc8bd1371e160"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ad0ba4ca53d0ee907eb9bc8bd1371e160">CONFIGURE_CLK_INPUT</a>()</td></tr>
<tr class="separator:ad0ba4ca53d0ee907eb9bc8bd1371e160"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94764019b42966d67e1b055517be332b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a94764019b42966d67e1b055517be332b">CONFIGURE_CLK_OUTPUT</a>()</td></tr>
<tr class="separator:a94764019b42966d67e1b055517be332b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2bb48d3d1c992959835f1d11f3d0da0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ae2bb48d3d1c992959835f1d11f3d0da0">WRITE_DAT_R0</a>()</td></tr>
<tr class="separator:ae2bb48d3d1c992959835f1d11f3d0da0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96bc661c052ea1b3d02fba3046093277"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a96bc661c052ea1b3d02fba3046093277">RTC_MEM_PROG_START</a>&#160;&#160;&#160;0x000</td></tr>
<tr class="separator:a96bc661c052ea1b3d02fba3046093277"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adae1049943ed6f144d3f646ca870274d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#adae1049943ed6f144d3f646ca870274d">RTC_MEM_MODE</a>&#160;&#160;&#160;0x400</td></tr>
<tr class="separator:adae1049943ed6f144d3f646ca870274d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7c821ca6de3f506587dde01bee16e5f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#aa7c821ca6de3f506587dde01bee16e5f">RTC_MEM_SEND_WORD</a>&#160;&#160;&#160;0x401</td></tr>
<tr class="separator:aa7c821ca6de3f506587dde01bee16e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad85b3534d796cfd7fcad617a733673b0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ad85b3534d796cfd7fcad617a733673b0">RTC_MEM_WRITE_POS</a>&#160;&#160;&#160;0x402</td></tr>
<tr class="separator:ad85b3534d796cfd7fcad617a733673b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affa4da0a9b146ee2e824cc6d4c645757"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#affa4da0a9b146ee2e824cc6d4c645757">RTC_MEM_WORD_SENT_FLAG</a>&#160;&#160;&#160;0x403</td></tr>
<tr class="separator:affa4da0a9b146ee2e824cc6d4c645757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afab8b3fa451714839537e6301864aa1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#afab8b3fa451714839537e6301864aa1f">RTC_MEM_WORD_RECEIVED_FLAG</a>&#160;&#160;&#160;0x404</td></tr>
<tr class="separator:afab8b3fa451714839537e6301864aa1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16e8ae69ef7aa89f91fb4c1c4467af43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a16e8ae69ef7aa89f91fb4c1c4467af43">RTC_MEM_BUFFER_BTM</a>&#160;&#160;&#160;0x405</td></tr>
<tr class="separator:a16e8ae69ef7aa89f91fb4c1c4467af43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20b16d9a6adfd8cf47bae14ac9f93bdc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a20b16d9a6adfd8cf47bae14ac9f93bdc">RTC_MEM_BUFFER_TOP</a>&#160;&#160;&#160;0x800</td></tr>
<tr class="separator:a20b16d9a6adfd8cf47bae14ac9f93bdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb6bd96a9a25abd2c9a549590e811218"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#acb6bd96a9a25abd2c9a549590e811218">MODE_RECEIVE</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:acb6bd96a9a25abd2c9a549590e811218"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae890f0e32a17fbc3a6d813bb5a666ebb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ae890f0e32a17fbc3a6d813bb5a666ebb">MODE_SEND</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ae890f0e32a17fbc3a6d813bb5a666ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30405708dbb05d3961910576bbdd010d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a30405708dbb05d3961910576bbdd010d">READY_TO_RECEIVE</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a30405708dbb05d3961910576bbdd010d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac361efa064a138c708632731205c3f50"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ac361efa064a138c708632731205c3f50">RECEIVE_NEXT_WORD</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ac361efa064a138c708632731205c3f50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa691d8aa9e1fbb1d2318bd0efd6edbfb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#aa691d8aa9e1fbb1d2318bd0efd6edbfb">RECEIVE_NEXT_BIT</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:aa691d8aa9e1fbb1d2318bd0efd6edbfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48dd6938cf4e5ae6348e98aea7db4bbf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a48dd6938cf4e5ae6348e98aea7db4bbf">RECEIVE_WAIT_FOR_CLK_HIGH</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:a48dd6938cf4e5ae6348e98aea7db4bbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9db72f9857023ed7debbd47c15057590"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a9db72f9857023ed7debbd47c15057590">RECEIVE_WORD_READY</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:a9db72f9857023ed7debbd47c15057590"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08b751031ade22c1a2e6e696e62982ea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a08b751031ade22c1a2e6e696e62982ea">SEND_WORD</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:a08b751031ade22c1a2e6e696e62982ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6a996125b0ebecb21c6c41eca99cbbd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#ad6a996125b0ebecb21c6c41eca99cbbd">SEND_NEXT_BIT</a>&#160;&#160;&#160;6</td></tr>
<tr class="separator:ad6a996125b0ebecb21c6c41eca99cbbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add3b74e18f575080b7c271512c40b242"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#add3b74e18f575080b7c271512c40b242">SEND_WAIT_FOR_CLK_HIGH</a>&#160;&#160;&#160;7</td></tr>
<tr class="separator:add3b74e18f575080b7c271512c40b242"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a9088e4c66e490d3911a1dad4cb12d3d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefabgl.html#a9088e4c66e490d3911a1dad4cb12d3d1">fabgl::replace_placeholders</a> (uint32_t prg_start, int size, gpio_num_t clkGPIO, gpio_num_t datGPIO)</td></tr>
<tr class="separator:a9088e4c66e490d3911a1dad4cb12d3d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a67ed8973672a317d53c1615f4ff4f58c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classfabgl_1_1_p_s2_controller_class.html">fabgl::PS2ControllerClass</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ps2controller_8cpp.html#a67ed8973672a317d53c1615f4ff4f58c">PS2Controller</a></td></tr>
<tr class="separator:a67ed8973672a317d53c1615f4ff4f58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26f57233fd5863eb184f033c8532b94a"><td class="memItemLeft" align="right" valign="top">const ulp_insn_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacefabgl.html#a26f57233fd5863eb184f033c8532b94a">fabgl::ULPCode</a> []</td></tr>
<tr class="separator:a26f57233fd5863eb184f033c8532b94a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ab652b8c0cfd8899667d91f76a7e91c2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab652b8c0cfd8899667d91f76a7e91c2e">&#9670;&nbsp;</a></span>ALU_SEL_STAGE_DEC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ALU_SEL_STAGE_DEC&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a4bfbe1f06bbbe7b444e7ac1f151351eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bfbe1f06bbbe7b444e7ac1f151351eb">&#9670;&nbsp;</a></span>ALU_SEL_STAGE_INC</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ALU_SEL_STAGE_INC&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab868d72a02aa796b83215b40138c6f97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab868d72a02aa796b83215b40138c6f97">&#9670;&nbsp;</a></span>ALU_SEL_STAGE_RST</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ALU_SEL_STAGE_RST&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab23c17990eb92150e0a68f4b9ca9d163"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab23c17990eb92150e0a68f4b9ca9d163">&#9670;&nbsp;</a></span>CLK_ENABLE_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CLK_ENABLE_INPUT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">value</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = value, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#add9b0bf4256670413f2e06e0bb52bfc5">SUB_OPCODE_CLK_ENABLE_INPUT</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_add9b0bf4256670413f2e06e0bb52bfc5"><div class="ttname"><a href="ps2controller_8cpp.html#add9b0bf4256670413f2e06e0bb52bfc5">SUB_OPCODE_CLK_ENABLE_INPUT</a></div><div class="ttdeci">#define SUB_OPCODE_CLK_ENABLE_INPUT</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:133</div></div>
<div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a80a16ddf4ac1d8a3c591bde33666ae81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80a16ddf4ac1d8a3c591bde33666ae81">&#9670;&nbsp;</a></span>CLK_ENABLE_OUTPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CLK_ENABLE_OUTPUT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">value</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = value, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a85aeae26c958f9af8f3a01272ac3ccb2">SUB_OPCODE_CLK_ENABLE_OUTPUT</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a85aeae26c958f9af8f3a01272ac3ccb2"><div class="ttname"><a href="ps2controller_8cpp.html#a85aeae26c958f9af8f3a01272ac3ccb2">SUB_OPCODE_CLK_ENABLE_OUTPUT</a></div><div class="ttdeci">#define SUB_OPCODE_CLK_ENABLE_OUTPUT</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:132</div></div>
<div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad0ba4ca53d0ee907eb9bc8bd1371e160"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0ba4ca53d0ee907eb9bc8bd1371e160">&#9670;&nbsp;</a></span>CONFIGURE_CLK_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CONFIGURE_CLK_INPUT</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#a80a16ddf4ac1d8a3c591bde33666ae81">CLK_ENABLE_OUTPUT</a>(0), \</div><div class="line">    CLK_ENABLE_INPUT(1)</div><div class="ttc" id="ps2controller_8cpp_html_a80a16ddf4ac1d8a3c591bde33666ae81"><div class="ttname"><a href="ps2controller_8cpp.html#a80a16ddf4ac1d8a3c591bde33666ae81">CLK_ENABLE_OUTPUT</a></div><div class="ttdeci">#define CLK_ENABLE_OUTPUT(value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:152</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a94764019b42966d67e1b055517be332b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94764019b42966d67e1b055517be332b">&#9670;&nbsp;</a></span>CONFIGURE_CLK_OUTPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CONFIGURE_CLK_OUTPUT</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#a80a16ddf4ac1d8a3c591bde33666ae81">CLK_ENABLE_OUTPUT</a>(1), \</div><div class="line">    CLK_ENABLE_INPUT(0)</div><div class="ttc" id="ps2controller_8cpp_html_a80a16ddf4ac1d8a3c591bde33666ae81"><div class="ttname"><a href="ps2controller_8cpp.html#a80a16ddf4ac1d8a3c591bde33666ae81">CLK_ENABLE_OUTPUT</a></div><div class="ttdeci">#define CLK_ENABLE_OUTPUT(value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:152</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acfc5f30a2fd7f671a7582e5487914412"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfc5f30a2fd7f671a7582e5487914412">&#9670;&nbsp;</a></span>CONFIGURE_DAT_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CONFIGURE_DAT_INPUT</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#ab53d041c86ba4e908882a5b557aca27b">DAT_ENABLE_OUTPUT</a>(0), \</div><div class="line">    DAT_ENABLE_INPUT(1)</div><div class="ttc" id="ps2controller_8cpp_html_ab53d041c86ba4e908882a5b557aca27b"><div class="ttname"><a href="ps2controller_8cpp.html#ab53d041c86ba4e908882a5b557aca27b">DAT_ENABLE_OUTPUT</a></div><div class="ttdeci">#define DAT_ENABLE_OUTPUT(value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:140</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7bce29ca4dc74fef073aa33b93980cce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7bce29ca4dc74fef073aa33b93980cce">&#9670;&nbsp;</a></span>CONFIGURE_DAT_OUTPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CONFIGURE_DAT_OUTPUT</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#ab53d041c86ba4e908882a5b557aca27b">DAT_ENABLE_OUTPUT</a>(1), \</div><div class="line">    DAT_ENABLE_INPUT(0)</div><div class="ttc" id="ps2controller_8cpp_html_ab53d041c86ba4e908882a5b557aca27b"><div class="ttname"><a href="ps2controller_8cpp.html#ab53d041c86ba4e908882a5b557aca27b">DAT_ENABLE_OUTPUT</a></div><div class="ttdeci">#define DAT_ENABLE_OUTPUT(value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:140</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a10dcf51781ccd8966e2bfb50ed9efedc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10dcf51781ccd8966e2bfb50ed9efedc">&#9670;&nbsp;</a></span>DAT_ENABLE_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DAT_ENABLE_INPUT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">value</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = value, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a6a6f288524413c992f2e050ef73dea69">SUB_OPCODE_DAT_ENABLE_INPUT</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a6a6f288524413c992f2e050ef73dea69"><div class="ttname"><a href="ps2controller_8cpp.html#a6a6f288524413c992f2e050ef73dea69">SUB_OPCODE_DAT_ENABLE_INPUT</a></div><div class="ttdeci">#define SUB_OPCODE_DAT_ENABLE_INPUT</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:131</div></div>
<div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab53d041c86ba4e908882a5b557aca27b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab53d041c86ba4e908882a5b557aca27b">&#9670;&nbsp;</a></span>DAT_ENABLE_OUTPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DAT_ENABLE_OUTPUT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">value</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = value, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a16d0788f82ffc4b01de3d00f1daf8ea7">SUB_OPCODE_DAT_ENABLE_OUTPUT</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
<div class="ttc" id="ps2controller_8cpp_html_a16d0788f82ffc4b01de3d00f1daf8ea7"><div class="ttname"><a href="ps2controller_8cpp.html#a16d0788f82ffc4b01de3d00f1daf8ea7">SUB_OPCODE_DAT_ENABLE_OUTPUT</a></div><div class="ttdeci">#define SUB_OPCODE_DAT_ENABLE_OUTPUT</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:130</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8d52b3d8b631221e33b9279d00a970e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d52b3d8b631221e33b9279d00a970e6">&#9670;&nbsp;</a></span>I_STAGEBGE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_STAGEBGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pc_offset, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_value&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .b = { \</div><div class="line">    .imm = 0x8000 | imm_value, \</div><div class="line">    .cmp = 0, \</div><div class="line">    .offset = abs(pc_offset), \</div><div class="line">    .sign = (pc_offset &gt;= 0) ? 0 : 1, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a>, \</div><div class="line">    .opcode = OPCODE_BRANCH } }</div><div class="ttc" id="ps2controller_8cpp_html_a1c1c1ff8c426e46b2c8cad9a7ff138c8"><div class="ttname"><a href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a></div><div class="ttdeci">#define SUB_OPCODE_STAGEB</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:49</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af4dbdabbf7925d4a8a35c96b902fec00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4dbdabbf7925d4a8a35c96b902fec00">&#9670;&nbsp;</a></span>I_STAGEBL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_STAGEBL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pc_offset, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_value&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .b = { \</div><div class="line">    .imm = imm_value, \</div><div class="line">    .cmp = 0, \</div><div class="line">    .offset = abs(pc_offset), \</div><div class="line">    .sign = (pc_offset &gt;= 0) ? 0 : 1, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a>, \</div><div class="line">    .opcode = OPCODE_BRANCH } }</div><div class="ttc" id="ps2controller_8cpp_html_a1c1c1ff8c426e46b2c8cad9a7ff138c8"><div class="ttname"><a href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a></div><div class="ttdeci">#define SUB_OPCODE_STAGEB</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:49</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4755949cb17dd864e133403d44dcd7b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4755949cb17dd864e133403d44dcd7b5">&#9670;&nbsp;</a></span>I_STAGEBLE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_STAGEBLE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pc_offset, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_value&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .b = { \</div><div class="line">    .imm = imm_value, \</div><div class="line">    .cmp = 1, \</div><div class="line">    .offset = abs(pc_offset), \</div><div class="line">    .sign = (pc_offset &gt;= 0) ? 0 : 1, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a>, \</div><div class="line">    .opcode = OPCODE_BRANCH } }</div><div class="ttc" id="ps2controller_8cpp_html_a1c1c1ff8c426e46b2c8cad9a7ff138c8"><div class="ttname"><a href="ps2controller_8cpp.html#a1c1c1ff8c426e46b2c8cad9a7ff138c8">SUB_OPCODE_STAGEB</a></div><div class="ttdeci">#define SUB_OPCODE_STAGEB</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:49</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a71f0ad49a10c5a9d3ded1d85a383e65f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71f0ad49a10c5a9d3ded1d85a383e65f">&#9670;&nbsp;</a></span>I_STAGEDECI</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_STAGEDECI</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .alu_imm = { \</div><div class="line">    .dreg = 0, \</div><div class="line">    .sreg = 0, \</div><div class="line">    .imm = imm_, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sel = <a class="code" href="ps2controller_8cpp.html#ab652b8c0cfd8899667d91f76a7e91c2e">ALU_SEL_STAGE_DEC</a>, \</div><div class="line">    .sub_opcode = SUB_OPCODE_ALU_CNT, \</div><div class="line">    .opcode = OPCODE_ALU } }</div><div class="ttc" id="ps2controller_8cpp_html_ab652b8c0cfd8899667d91f76a7e91c2e"><div class="ttname"><a href="ps2controller_8cpp.html#ab652b8c0cfd8899667d91f76a7e91c2e">ALU_SEL_STAGE_DEC</a></div><div class="ttdeci">#define ALU_SEL_STAGE_DEC</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:46</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac9393ef34cc4462c34fcfdf54804978e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9393ef34cc4462c34fcfdf54804978e">&#9670;&nbsp;</a></span>I_STAGEINCI</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_STAGEINCI</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .alu_imm = { \</div><div class="line">    .dreg = 0, \</div><div class="line">    .sreg = 0, \</div><div class="line">    .imm = imm_, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sel = <a class="code" href="ps2controller_8cpp.html#a4bfbe1f06bbbe7b444e7ac1f151351eb">ALU_SEL_STAGE_INC</a>, \</div><div class="line">    .sub_opcode = SUB_OPCODE_ALU_CNT, \</div><div class="line">    .opcode = OPCODE_ALU } }</div><div class="ttc" id="ps2controller_8cpp_html_a4bfbe1f06bbbe7b444e7ac1f151351eb"><div class="ttname"><a href="ps2controller_8cpp.html#a4bfbe1f06bbbe7b444e7ac1f151351eb">ALU_SEL_STAGE_INC</a></div><div class="ttdeci">#define ALU_SEL_STAGE_INC</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:45</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac9fd47ba32cdba2080612cb4f043100e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9fd47ba32cdba2080612cb4f043100e">&#9670;&nbsp;</a></span>I_STAGERSTI</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define I_STAGERSTI</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .alu_imm = { \</div><div class="line">    .dreg = 0, \</div><div class="line">    .sreg = 0, \</div><div class="line">    .imm = 0, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sel = <a class="code" href="ps2controller_8cpp.html#ab868d72a02aa796b83215b40138c6f97">ALU_SEL_STAGE_RST</a>, \</div><div class="line">    .sub_opcode = SUB_OPCODE_ALU_CNT, \</div><div class="line">    .opcode = OPCODE_ALU } }</div><div class="ttc" id="ps2controller_8cpp_html_ab868d72a02aa796b83215b40138c6f97"><div class="ttname"><a href="ps2controller_8cpp.html#ab868d72a02aa796b83215b40138c6f97">ALU_SEL_STAGE_RST</a></div><div class="ttdeci">#define ALU_SEL_STAGE_RST</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:47</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab40d3683c4eca6567bc9276b575fc864"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab40d3683c4eca6567bc9276b575fc864">&#9670;&nbsp;</a></span>M_STAGEBGE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define M_STAGEBGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">label_num, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_value&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#af4dbdabbf7925d4a8a35c96b902fec00">I_STAGEBL</a>(2, imm_value), \</div><div class="line">    M_BX(label_num)</div><div class="ttc" id="ps2controller_8cpp_html_af4dbdabbf7925d4a8a35c96b902fec00"><div class="ttname"><a href="ps2controller_8cpp.html#af4dbdabbf7925d4a8a35c96b902fec00">I_STAGEBL</a></div><div class="ttdeci">#define I_STAGEBL(pc_offset, imm_value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:82</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a53f586c2584f6b950fd270a44ce7b04e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53f586c2584f6b950fd270a44ce7b04e">&#9670;&nbsp;</a></span>M_STAGEBL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define M_STAGEBL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">label_num, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_value&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#a8d52b3d8b631221e33b9279d00a970e6">I_STAGEBGE</a>(2, imm_value), \</div><div class="line">    M_BX(label_num)</div><div class="ttc" id="ps2controller_8cpp_html_a8d52b3d8b631221e33b9279d00a970e6"><div class="ttname"><a href="ps2controller_8cpp.html#a8d52b3d8b631221e33b9279d00a970e6">I_STAGEBGE</a></div><div class="ttdeci">#define I_STAGEBGE(pc_offset, imm_value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:100</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2550166573bd62d4288f8b4b727dbc77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2550166573bd62d4288f8b4b727dbc77">&#9670;&nbsp;</a></span>M_STAGEBLE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define M_STAGEBLE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">label_num, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">imm_value&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="ps2controller_8cpp.html#a4755949cb17dd864e133403d44dcd7b5">I_STAGEBLE</a>(2, imm_value), \</div><div class="line">    I_STAGEBGE(2, imm_value), \</div><div class="line">    M_BX(label_num)</div><div class="ttc" id="ps2controller_8cpp_html_a4755949cb17dd864e133403d44dcd7b5"><div class="ttname"><a href="ps2controller_8cpp.html#a4755949cb17dd864e133403d44dcd7b5">I_STAGEBLE</a></div><div class="ttdeci">#define I_STAGEBLE(pc_offset, imm_value)</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:91</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acb6bd96a9a25abd2c9a549590e811218"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb6bd96a9a25abd2c9a549590e811218">&#9670;&nbsp;</a></span>MODE_RECEIVE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODE_RECEIVE&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae890f0e32a17fbc3a6d813bb5a666ebb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae890f0e32a17fbc3a6d813bb5a666ebb">&#9670;&nbsp;</a></span>MODE_SEND</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODE_SEND&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a5b7f9873e5b44904e667e8f8637cf603"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b7f9873e5b44904e667e8f8637cf603">&#9670;&nbsp;</a></span>OPCODE_PLACEHOLDER</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OPCODE_PLACEHOLDER&#160;&#160;&#160;12</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a9243e4924e006c3a32a267fbdf950822"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9243e4924e006c3a32a267fbdf950822">&#9670;&nbsp;</a></span>READ_CLK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define READ_CLK</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = 0, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#adb1cf39b55c237777170e7a1482f4bc0">SUB_OPCODE_READ_CLK</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
<div class="ttc" id="ps2controller_8cpp_html_adb1cf39b55c237777170e7a1482f4bc0"><div class="ttname"><a href="ps2controller_8cpp.html#adb1cf39b55c237777170e7a1482f4bc0">SUB_OPCODE_READ_CLK</a></div><div class="ttdeci">#define SUB_OPCODE_READ_CLK</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:134</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aed4ba55f171bb3792a7234f58e8e43ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed4ba55f171bb3792a7234f58e8e43ed">&#9670;&nbsp;</a></span>READ_DAT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define READ_DAT</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = 0, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a5cfb47794c37ac75d6be4342fa30e0da">SUB_OPCODE_READ_DAT</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
<div class="ttc" id="ps2controller_8cpp_html_a5cfb47794c37ac75d6be4342fa30e0da"><div class="ttname"><a href="ps2controller_8cpp.html#a5cfb47794c37ac75d6be4342fa30e0da">SUB_OPCODE_READ_DAT</a></div><div class="ttdeci">#define SUB_OPCODE_READ_DAT</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:135</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a30405708dbb05d3961910576bbdd010d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30405708dbb05d3961910576bbdd010d">&#9670;&nbsp;</a></span>READY_TO_RECEIVE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define READY_TO_RECEIVE&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa691d8aa9e1fbb1d2318bd0efd6edbfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa691d8aa9e1fbb1d2318bd0efd6edbfb">&#9670;&nbsp;</a></span>RECEIVE_NEXT_BIT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RECEIVE_NEXT_BIT&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ac361efa064a138c708632731205c3f50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac361efa064a138c708632731205c3f50">&#9670;&nbsp;</a></span>RECEIVE_NEXT_WORD</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RECEIVE_NEXT_WORD&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a48dd6938cf4e5ae6348e98aea7db4bbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48dd6938cf4e5ae6348e98aea7db4bbf">&#9670;&nbsp;</a></span>RECEIVE_WAIT_FOR_CLK_HIGH</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RECEIVE_WAIT_FOR_CLK_HIGH&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a9db72f9857023ed7debbd47c15057590"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9db72f9857023ed7debbd47c15057590">&#9670;&nbsp;</a></span>RECEIVE_WORD_READY</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RECEIVE_WORD_READY&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a16e8ae69ef7aa89f91fb4c1c4467af43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16e8ae69ef7aa89f91fb4c1c4467af43">&#9670;&nbsp;</a></span>RTC_MEM_BUFFER_BTM</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_BUFFER_BTM&#160;&#160;&#160;0x405</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a20b16d9a6adfd8cf47bae14ac9f93bdc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20b16d9a6adfd8cf47bae14ac9f93bdc">&#9670;&nbsp;</a></span>RTC_MEM_BUFFER_TOP</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_BUFFER_TOP&#160;&#160;&#160;0x800</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="adae1049943ed6f144d3f646ca870274d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adae1049943ed6f144d3f646ca870274d">&#9670;&nbsp;</a></span>RTC_MEM_MODE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_MODE&#160;&#160;&#160;0x400</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a96bc661c052ea1b3d02fba3046093277"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96bc661c052ea1b3d02fba3046093277">&#9670;&nbsp;</a></span>RTC_MEM_PROG_START</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_PROG_START&#160;&#160;&#160;0x000</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa7c821ca6de3f506587dde01bee16e5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7c821ca6de3f506587dde01bee16e5f">&#9670;&nbsp;</a></span>RTC_MEM_SEND_WORD</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_SEND_WORD&#160;&#160;&#160;0x401</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="afab8b3fa451714839537e6301864aa1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afab8b3fa451714839537e6301864aa1f">&#9670;&nbsp;</a></span>RTC_MEM_WORD_RECEIVED_FLAG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_WORD_RECEIVED_FLAG&#160;&#160;&#160;0x404</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="affa4da0a9b146ee2e824cc6d4c645757"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affa4da0a9b146ee2e824cc6d4c645757">&#9670;&nbsp;</a></span>RTC_MEM_WORD_SENT_FLAG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_WORD_SENT_FLAG&#160;&#160;&#160;0x403</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad85b3534d796cfd7fcad617a733673b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad85b3534d796cfd7fcad617a733673b0">&#9670;&nbsp;</a></span>RTC_MEM_WRITE_POS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RTC_MEM_WRITE_POS&#160;&#160;&#160;0x402</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad6a996125b0ebecb21c6c41eca99cbbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6a996125b0ebecb21c6c41eca99cbbd">&#9670;&nbsp;</a></span>SEND_NEXT_BIT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SEND_NEXT_BIT&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="add3b74e18f575080b7c271512c40b242"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add3b74e18f575080b7c271512c40b242">&#9670;&nbsp;</a></span>SEND_WAIT_FOR_CLK_HIGH</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SEND_WAIT_FOR_CLK_HIGH&#160;&#160;&#160;7</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a08b751031ade22c1a2e6e696e62982ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08b751031ade22c1a2e6e696e62982ea">&#9670;&nbsp;</a></span>SEND_WORD</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SEND_WORD&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="add9b0bf4256670413f2e06e0bb52bfc5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add9b0bf4256670413f2e06e0bb52bfc5">&#9670;&nbsp;</a></span>SUB_OPCODE_CLK_ENABLE_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_CLK_ENABLE_INPUT&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a85aeae26c958f9af8f3a01272ac3ccb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85aeae26c958f9af8f3a01272ac3ccb2">&#9670;&nbsp;</a></span>SUB_OPCODE_CLK_ENABLE_OUTPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_CLK_ENABLE_OUTPUT&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a6a6f288524413c992f2e050ef73dea69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a6f288524413c992f2e050ef73dea69">&#9670;&nbsp;</a></span>SUB_OPCODE_DAT_ENABLE_INPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_DAT_ENABLE_INPUT&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a16d0788f82ffc4b01de3d00f1daf8ea7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16d0788f82ffc4b01de3d00f1daf8ea7">&#9670;&nbsp;</a></span>SUB_OPCODE_DAT_ENABLE_OUTPUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_DAT_ENABLE_OUTPUT&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="adb1cf39b55c237777170e7a1482f4bc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb1cf39b55c237777170e7a1482f4bc0">&#9670;&nbsp;</a></span>SUB_OPCODE_READ_CLK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_READ_CLK&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a5cfb47794c37ac75d6be4342fa30e0da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cfb47794c37ac75d6be4342fa30e0da">&#9670;&nbsp;</a></span>SUB_OPCODE_READ_DAT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_READ_DAT&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a1c1c1ff8c426e46b2c8cad9a7ff138c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c1c1ff8c426e46b2c8cad9a7ff138c8">&#9670;&nbsp;</a></span>SUB_OPCODE_STAGEB</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_STAGEB&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a78eafe1938d187551724a7387d5d5049"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78eafe1938d187551724a7387d5d5049">&#9670;&nbsp;</a></span>SUB_OPCODE_WRITE_CLK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_WRITE_CLK&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ada4b23db4c3182a1bfc090b8aee74f61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada4b23db4c3182a1bfc090b8aee74f61">&#9670;&nbsp;</a></span>SUB_OPCODE_WRITE_DAT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUB_OPCODE_WRITE_DAT&#160;&#160;&#160;7</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae0ba0e5cc89746602bd06ca6a5c85c62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0ba0e5cc89746602bd06ca6a5c85c62">&#9670;&nbsp;</a></span>WRITE_CLK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WRITE_CLK</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">value</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = value, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#a78eafe1938d187551724a7387d5d5049">SUB_OPCODE_WRITE_CLK</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
<div class="ttc" id="ps2controller_8cpp_html_a78eafe1938d187551724a7387d5d5049"><div class="ttname"><a href="ps2controller_8cpp.html#a78eafe1938d187551724a7387d5d5049">SUB_OPCODE_WRITE_CLK</a></div><div class="ttdeci">#define SUB_OPCODE_WRITE_CLK</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:136</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab33235b78bba02ef274506dbda628e97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab33235b78bba02ef274506dbda628e97">&#9670;&nbsp;</a></span>WRITE_DAT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WRITE_DAT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">value</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{ .macro = { \</div><div class="line">    .label = value, \</div><div class="line">    .unused = 0, \</div><div class="line">    .sub_opcode = <a class="code" href="ps2controller_8cpp.html#ada4b23db4c3182a1bfc090b8aee74f61">SUB_OPCODE_WRITE_DAT</a>, \</div><div class="line">    .opcode = <a class="code" href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a> } }</div><div class="ttc" id="ps2controller_8cpp_html_a5b7f9873e5b44904e667e8f8637cf603"><div class="ttname"><a href="ps2controller_8cpp.html#a5b7f9873e5b44904e667e8f8637cf603">OPCODE_PLACEHOLDER</a></div><div class="ttdeci">#define OPCODE_PLACEHOLDER</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:129</div></div>
<div class="ttc" id="ps2controller_8cpp_html_ada4b23db4c3182a1bfc090b8aee74f61"><div class="ttname"><a href="ps2controller_8cpp.html#ada4b23db4c3182a1bfc090b8aee74f61">SUB_OPCODE_WRITE_DAT</a></div><div class="ttdeci">#define SUB_OPCODE_WRITE_DAT</div><div class="ttdef"><b>Definition:</b> ps2controller.cpp:137</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae2bb48d3d1c992959835f1d11f3d0da0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2bb48d3d1c992959835f1d11f3d0da0">&#9670;&nbsp;</a></span>WRITE_DAT_R0</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WRITE_DAT_R0</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">I_BL(3, 1), \</div><div class="line">    WRITE_DAT(1), \</div><div class="line">    I_BGE(2, 1), \</div><div class="line">    WRITE_DAT(0)</div></div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a67ed8973672a317d53c1615f4ff4f58c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67ed8973672a317d53c1615f4ff4f58c">&#9670;&nbsp;</a></span>PS2Controller</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classfabgl_1_1_p_s2_controller_class.html">fabgl::PS2ControllerClass</a> PS2Controller</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="ps2controller_8cpp.html">ps2controller.cpp</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
